package com.ruoyi.generator.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

/**
 * 读取代码生成相关配置
 *
 * @author ruoyi
 */
@Component
@ConfigurationProperties(prefix = "gen")
@PropertySource(value = {"classpath:generator.yml"})
public class GenConfig {
    /**
     * 作者
     */
    public static String author;

    /**
     * 生成包路径
     */
    public static String packageName;

    /**
     * 自动去除表前缀
     */
    public static boolean autoRemovePre;

    /**
     * 表前缀
     */
    public static String tablePrefix;

    /**
     * 是否允许生成文件覆盖到本地（自定义路径）
     */
    public static boolean allowOverwrite;

    /**
     * 获取作者信息
     *
     * @return 返回配置中设置的作者名称
     */
    public static String getAuthor() {
        return author;
    }

    /**
     * 设置作者信息
     *
     * @param author 从配置文件中读取的作者名称
     */
    @Value("${author}")
    public void setAuthor(String author) {
        GenConfig.author = author;
    }

    /**
     * 获取生成代码的包路径
     *
     * @return 返回配置中指定的包路径
     */
    public static String getPackageName() {
        return packageName;
    }

    /**
     * 设置生成代码的包路径
     *
     * @param packageName 从配置文件中读取的包路径
     */
    @Value("${packageName}")
    public void setPackageName(String packageName) {
        GenConfig.packageName = packageName;
    }

    /**
     * 获取是否自动移除表前缀的配置
     *
     * @return true表示需要自动移除表前缀，false表示不需要
     */
    public static boolean getAutoRemovePre() {
        return autoRemovePre;
    }

    /**
     * 设置是否自动移除表前缀
     *
     * @param autoRemovePre 从配置文件中读取的布尔值
     */
    @Value("${autoRemovePre}")
    public void setAutoRemovePre(boolean autoRemovePre) {
        GenConfig.autoRemovePre = autoRemovePre;
    }

    /**
     * 获取表前缀字符串
     *
     * @return 返回配置中的表前缀
     */
    public static String getTablePrefix() {
        return tablePrefix;
    }

    /**
     * 设置表前缀
     *
     * @param tablePrefix 从配置文件中读取的表前缀字符串
     */
    @Value("${tablePrefix}")
    public void setTablePrefix(String tablePrefix) {
        GenConfig.tablePrefix = tablePrefix;
    }

    /**
     * 判断是否允许覆盖已存在的文件
     *
     * @return true表示允许覆盖，false表示不允许
     */
    public static boolean isAllowOverwrite() {
        return allowOverwrite;
    }

    /**
     * 设置是否允许覆盖已有文件的配置
     *
     * @param allowOverwrite 从配置文件中读取的布尔值
     */
    @Value("${allowOverwrite}")
    public void setAllowOverwrite(boolean allowOverwrite) {
        GenConfig.allowOverwrite = allowOverwrite;
    }
}
